home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-xtensa / termios.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.9 KB  |  106 lines

  1. /*
  2.  * include/asm-xtensa/termios.h
  3.  *
  4.  * Copied from SH.
  5.  *
  6.  * This file is subject to the terms and conditions of the GNU General Public
  7.  * License.  See the file "COPYING" in the main directory of this archive
  8.  * for more details.
  9.  *
  10.  * Copyright (C) 2001 - 2005 Tensilica Inc.
  11.  */
  12.  
  13. #ifndef _XTENSA_TERMIOS_H
  14. #define _XTENSA_TERMIOS_H
  15.  
  16. #include <asm/termbits.h>
  17. #include <asm/ioctls.h>
  18.  
  19. struct winsize {
  20.     unsigned short ws_row;
  21.     unsigned short ws_col;
  22.     unsigned short ws_xpixel;
  23.     unsigned short ws_ypixel;
  24. };
  25.  
  26. #define NCC 8
  27. struct termio {
  28.     unsigned short c_iflag;        /* input mode flags */
  29.     unsigned short c_oflag;        /* output mode flags */
  30.     unsigned short c_cflag;        /* control mode flags */
  31.     unsigned short c_lflag;        /* local mode flags */
  32.     unsigned char c_line;        /* line discipline */
  33.     unsigned char c_cc[NCC];    /* control characters */
  34. };
  35.  
  36. /* Modem lines */
  37.  
  38. #define TIOCM_LE    0x001
  39. #define TIOCM_DTR    0x002
  40. #define TIOCM_RTS    0x004
  41. #define TIOCM_ST    0x008
  42. #define TIOCM_SR    0x010
  43. #define TIOCM_CTS    0x020
  44. #define TIOCM_CAR    0x040
  45. #define TIOCM_RNG    0x080
  46. #define TIOCM_DSR    0x100
  47. #define TIOCM_CD    TIOCM_CAR
  48. #define TIOCM_RI    TIOCM_RNG
  49. #define TIOCM_OUT1    0x2000
  50. #define TIOCM_OUT2    0x4000
  51. #define TIOCM_LOOP    0x8000
  52.  
  53. /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
  54.  
  55. #ifdef __KERNEL__
  56.  
  57. /*    intr=^C        quit=^\        erase=del    kill=^U
  58.     eof=^D        vtime=\0    vmin=\1        sxtc=\0
  59.     start=^Q    stop=^S        susp=^Z        eol=\0
  60.     reprint=^R    discard=^U    werase=^W    lnext=^V
  61.     eol2=\0
  62. */
  63. #define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
  64.  
  65. /*
  66.  * Translate a "termio" structure into a "termios". Ugh.
  67.  */
  68.  
  69. #define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
  70.     unsigned short __tmp; \
  71.     get_user(__tmp,&(termio)->x); \
  72.     *(unsigned short *) &(termios)->x = __tmp; \
  73. }
  74.  
  75. #define user_termio_to_kernel_termios(termios, termio) \
  76. ({ \
  77.     SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
  78.     SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
  79.     SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
  80.     SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
  81.     copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
  82. })
  83.  
  84. /*
  85.  * Translate a "termios" structure into a "termio". Ugh.
  86.  */
  87.  
  88. #define kernel_termios_to_user_termio(termio, termios) \
  89. ({ \
  90.     put_user((termios)->c_iflag, &(termio)->c_iflag); \
  91.     put_user((termios)->c_oflag, &(termio)->c_oflag); \
  92.     put_user((termios)->c_cflag, &(termio)->c_cflag); \
  93.     put_user((termios)->c_lflag, &(termio)->c_lflag); \
  94.     put_user((termios)->c_line,  &(termio)->c_line); \
  95.     copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
  96. })
  97.  
  98. #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
  99. #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
  100. #define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
  101. #define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
  102.  
  103. #endif    /* __KERNEL__ */
  104.  
  105. #endif    /* _XTENSA_TERMIOS_H */
  106.